Ubuntu[22.04] PWN环境搭建

本章内容主要源自学长博客内容:学长博客这个小姐姐的博客也很有帮助

更新、安装vim

sudo apt upgrade
sudo apt install vim

更换镜像源

cd /etc/apt # 进入 apt 目录下
sudo cp sources.list sources.list.backup # 备份
sudo vim sources.list # 编辑 sources.list 文件

# 加入下面两个----之间的内容

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

# 刷新三连
sudo apt update
sudo apt upgrade
sudo apt clean

中科大源:


# 加入下面两个----之间的内容
-----------------------------------------------------------------
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
-----------------------------------------------------------------

注意:

Ubuntu 24.04 将以前的配置文件 /etc/apt/sources.list 改成了 /etc/apt/sources.list.d/ubuntu.sources

将原来的每个URL 链接改成对应的镜像源链接即可,我这里是清华源:

https://mirrors.tuna.tsinghua.edu.cn/ubuntu/

安装必要环境

将一下内容写入一个sh脚本文件中,为chmoe 777 xxx.sh文件赋权限后直接./xxx.sh运行脚本,中途会出现Do you want to continue? [Y/n]输入y

#!/bin/bash
cd ~
sudo apt install tzdata
sudo apt install vim
sudo apt install libxml2-dev
sudo apt install libxslt-dev
sudo apt install libmysqlclient-dev
sudo apt install libsqlite3-dev
sudo apt install zlib1g-dev
sudo apt install python2-dev
sudo apt install python3-pip
sudo apt install libffi-dev
sudo apt install libssl-dev
sudo apt install wget
sudo apt install curl
sudo apt install gcc
sudo apt install clang
sudo apt install make
sudo apt install zip
sudo apt install build-essential
sudo apt install libncursesw5-dev libgdbm-dev libc6-dev
sudo apt install tk-dev
sudo apt install openssl
sudo apt install virtualenv
sudo apt install git
sudo apt install proxychains4
sudo apt install ruby-dev

#setuptools 36.6.1 -> python2
wget https://mirrors.aliyun.com/pypi/packages/56/a0/4dfcc515b1b993286a64b9ab62562f09e6ed2d09288909aee1efdb9dde16/setuptools-36.6.1.zip
unzip setuptools-36.6.1.zip
cd setuptools-36.6.1
sudo python2 setup.py install
cd ../
sudo rm -rf setuptools-36.6.1 setuptools-36.6.1.zip

#setuptools 65.4.1 -> python3
wget https://mirrors.aliyun.com/pypi/packages/03/c9/7b050ea4cc4144d0328f15e0b43c839e759c6c639370a3b932ecf4c6358f/setuptools-65.4.1.tar.gz
tar -zxvf setuptools-65.4.1.tar.gz
cd setuptools-65.4.1
sudo python3 setup.py install
cd ../
sudo rm -rf setuptools-65.4.1 setuptools-65.4.1.tar.gz

#pip
wget https://mirrors.aliyun.com/pypi/packages/53/7f/55721ad0501a9076dbc354cc8c63ffc2d6f1ef360f49ad0fbcce19d68538/pip-20.3.4.tar.gz
tar -zxvf pip-20.3.4.tar.gz
cd pip-20.3.4
sudo python2 setup.py install
sudo python3 setup.py install
cd ../
sudo rm -rf pip-20.3.4 pip-20.3.4.tar.gz

sudo pip2 config set global.index-url https://mirrors.aliyun.com/pypi/simple
sudo pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple

sudo python2 -m pip install --upgrade pip
sudo python3 -m pip install --upgrade pip

pip3 install --upgrade pip
sudo pip2 install pathlib2

用了这些就可以直接跳到CTF配置了

安装python

系统有自带 python,但是可以自己换成更新的版本

sudo apt install python3.10  # 以 python 3.10 为例,格式为 pythonx.x

安装pip

主要安装 python3 的 pip

sudo apt install python3-pip

更新 pip 版本:

pip3 install --upgrade pip

注意:

Ubuntu 24.04 中使用 pip 安装库或者更新 pip 的时候可能会报错:

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.

这个问题非常常见,其实这不是 bug,而是 Ubuntu 为了避免冲突而加入的

简单粗暴的方式,直接屏蔽掉即可:

sudo mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.

但是这个方法在我这里无效

这里提供了其他方法:pip(3) install,完美解决 externally-managed-environment

建议使用venv

更换pip源

查看当前 pip 源配置:

pip config list
  • 在命令行直接更改,打开终端:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

如果配置成功,每次使用 pip install xxx 时,会显示:"Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple",且下载速度很快

安装 Anaconda

官网下载安装脚本即可:https://repo.anaconda.com/archive/

安装简单,参考这篇文章即可,写的很详细:如何在Linux服务器上安装Anaconda(超详细) linux安装anconda-CSDN博客

查看当前 conda 配置:

conda config --show

添加清华源,提高下载速度:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

创建新的 conda 环境:

conda create -n 环境名称 python=python版本 需要安装的python库 -y

查看已有的 conda 环境:

conda env list

激活 conda 环境:

conda activate 环境名称

删除 conda 环境:

conda remove --name 环境名称 --all

注意:

如果设置过默认 python 版本,例如:sudo ln -s /usr/bin/python3.10 /usr/bin/python,有可能在 conda 环境中 python 指向的是默认版本,而不是 conda 环境设置的版本

可以使用如下命令取消设置的默认 python 版本:sudo unlink /usr/bin/python,但是更推荐下面的方法

也可以临时设置环境变量:export PATH=~/anaconda3/envs/环境名称/bin:$PATH(具体请根据自己实际的环境路径来设置,可以通过 conda env list 来查看)

安装java

以 oracle-jdk 8 为例,下载 jdk-8u381-linux-x64.tar.gz

解压并移动到 /usr/bin 目录下:

tar vxf jdk-8u381-linux-x64.tar.gz
sudo mv jdk1.8.0_381 /usr/bin/

配置环境变量:

export JAVA_HOME=/usr/bin/jdk1.8.0_381
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 验证
java -version

CTF配置

现在回归PWN的配置

安装 git

sudo apt install git
  • 如果发现有时候网不行,github 项目 git 不下来或者 wget 不下来,无法连接,尝试 cdn 加速:
git config --global url."https://ghproxy.com/https://github.com

注意:官方是没有提供 cdn 的,因此上面的 cdn 链接都是用爱发电,可能某天就无法使用了

  • 查看当前 git 代理设置:
git config -l
  • 也可以对 github.com 添加代理:
git config --global http.https://github.com.proxy http://192.168.148.1:7890

但是如果你有科学上网的方法,比如文章的T4,这个问题就很好解决了~

安装 pwntools

pip安装老是报错,T3解决了

  • 通过 python 的 pip 安装
sudo apt install python3-pip
pip3 install --upgrade pip
sudo python3 -m pip install pwntools

# 或者直接安装pwn库,自带pwntools
sudo python3 -m pip install pwn
  • 通过 git 安装
sudo git clone https://github.com/Gallopsled/pwntools /opt/pwntools
cd /opt/pwntools
sudo python setup.py install
  • 验证安装
python # 打开python

# 输入下面的代码,Ⅰ或Ⅱ选其一即可
-------------------------------------------
# Ⅰ
import pwn
pwn.asm("xor eax,eax")
-------------------------------------------
# Ⅱ
from pwn import *
asm("xor eax,eax")
-------------------------------------------
# 如果输出的是这个,那就是安装成功了
输出:'1\xc0'
-------------------------------------------

安装 LibcSearcher

在做栈溢出相关的题时,经常会遇到构造 ROP 链的情况。若我们在 IDA 反编译之后没有看到 system 函数,栈题大概率需要泄漏 libc 库中的函数。此时,LibcSearcher 就是最好的选择,可以用它找到偏移地址

pip3 install LibcSearcher -i https://pypi.tuna.tsinghua.edu.cn/

到现在基本上的问题都解决了,你的环境已经初具雏形了,其他的软件或者脚本就靠平时的积累慢慢摸索,善用搜索引擎和吾爱破解,多问多学多练!

动调的话后面再补充吧~~~

Ubuntu[22.04] 安装问题

T1 安装anaconda

Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels的解决办法

解决方法一:将conda-forge添加到搜索路径上

首先,当出现这种报错时,应该首先尝试使用以下命令将conda-forge channel添加到你的channel列表中:

conda config --append channels conda-forge

它告诉conda在搜索软件包时也要在conda-forge channel上查看。

然后你就可以尝试利用如下命令再次安装

conda create -n PWN312 python=3.12.7

原因在于:channel可以看成是托管python包的服务器,当无法通过标准channel获得python包时,社区驱动的conda-forge通常是一个很好的地点。大部分问题都可以利用这条语句解决。

PackagesNotFoundError: The following packages are not available from current channels

这个问题针对安装好anaconda后,想要创建某个版本python环境 一直无法安装的问题

conda config --append channels conda-forge

再输入 conda activate 名称 python=3.12

T2 python setup.py egg_info did not run successfully.

error: subprocess-exited-with-error

× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [6 lines of output]
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "/tmp/pip-install-jnd5xf9b/intervaltree_9fcba97a03fc42f9b03720411b58bc09/setup.py", line 31, in <module>
from setuptools import setup
ImportError: cannot import name 'setup' from 'setuptools' (unknown location)
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed

× Encountered error while generating package metadata.
╰─> See above for output.

note: This is an issue with the package mentioned above, not pip.
hint: See above for details.

解决办法

sudo python3 -m pip install --upgrade setuptools

T3 安装pwntools

pip安装老是失败,改用git安装

sudo git clone https://github.com/Gallopsled/pwntools /opt/pwntools
cd /opt/pwntools
sudo python setup.py install

还有三个依赖包
pip install pyserial
pip install pyelftools
pip install intervaltree

T4 虚拟机走代理

以clash为例:

物理机:查找本地IP,打开clash局域网链接

虚拟机:在虚拟机中选择网络代理,方法改为手动

修改HTTP,HTTPS,FTP,Socks为主机IP端口修改为clash设置的端口

就可以在本地开clash,虚拟机也能用github啦

妈妈再也不会担心我拉不下来文件啦~~~

有其他的问题可以去学长的博客上找找看,也可以私信我,一起学习~